"""
ASGI config for channels_websocket_demo2 project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
"""

import os

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import demo_app.routing
import chat.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'channels_websocket_demo2.settings')

application = get_asgi_application()

# django channels URLRouter 中写多个的问题
# 参考：https://cloud.tencent.com/developer/article/1737733
"""
文档的误导
文档让我们一步一步实现一个简单的聊天室，他将routing.py写在chat这个APP的目录下，如果我除了chat这个APP需要用到websocket，那么其他APP的路由也得写到chat里面的routing.py。
因此，我为什么要将routing.py放在chat里面呢，它又不是chat专属。

更一般的形式
所以我建议，别学文档例子，将routing.py文件放在任何APP之下，而应该放在工程目录下（与APP同目录）创建一个文件夹如consumer，在里面创建routing.py和消费者。

但我更喜欢以下方式：将两个路由的list合成一个list
"""
routinglist=[]
routinglist.extend(demo_app.routing.websocket_urlpatterns)
routinglist.extend(chat.routing.websocket_urlpatterns)

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            routinglist
        )
    ),
})
